<?php
class BannerController extends Zend_Controller_Action
{
	private $_uiVar = array();
	private $_banner;

	public function init()
	{
		$this->_uiVar["html"]["title"] = BMSC_Html::WEBSITE_TITLE;
		try
		{
			$readerDb = Zend_Registry::get("READER_DB");
			$writerDb = Zend_Registry::get("WRITER_DB");

			$this->_banner = new BMSC_Banner($readerDb, $writerDb);
		}
		catch (Exception $ex)
		{
			echo $ex->getMessage();
		}
	}

	function indexAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{			
			$smarty = Zend_Registry::get("SMARTY");
			$smarty->assign("uiVar", $this->_uiVar);
			$smarty->display("banner/index.tpl");
		}
		else
		{
			$zokikAdminSession->redirect["NEXT_URL"] = "/banner";
			header("Location: /member/login");
		}
	}
	
	function listbannertypeAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try {
				$bannerTypes = $this->_banner->getBannerTypes();
				echo json_encode(array('code' => 0, 'data' => $bannerTypes));				
			} catch (Exception $ex) {
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));	
			}
		}
		else
		{
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
		}
	}

	function getinfoAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$bannerID = (int)trim($this->_getParam("id"));
				$banner = $this->_banner->getBanner($bannerID);
				echo json_encode(array("code" => 0, "data" => $banner));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function addAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimNewBannerData($formData);
				$errorMessage = $this->_checkNewBannerData($formData);
				
				if (empty($errorMessage))
				{
					$finfo = new finfo(FILEINFO_MIME_TYPE);
					$mimeType = $finfo->file(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["newBannerFilename"]);					
					
					if ($mimeType == "application/x-shockwave-flash")
						$mediaType = "flash";
					else
						$mediaType = "image";
					$row = $this->_banner->addBanner($formData["newBannerTypeID"],
													 BMSC_Html::BANNER_URL_PREFIX . $formData["newBannerFilename"],
													 $mediaType,
													 $formData["newBannerURL"], 
													 $formData["newBannerTarget"], 
													 $formData["newBannerPriority"], 
													 $formData["newBannerIsActive"],
													 $adminSession->member["EMAIL"]);
					if ($row > 0)
					{
						if (file_exists(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["newBannerFilename"]))
							rename(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["newBannerFilename"], BMSC_Html::UPLOAD_BANNER_DIRECTORY . $formData["newBannerFilename"]);
						echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
					}
					else
					{
						if (file_exists(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["newBannerFilename"]))
							unlink(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["newBannerFilename"]);
						echo json_encode(array("code" => -98, "data" => "- Có lỗi khi lưu dữ liệu vào cơ sở dữ liệu. <br />"));
					}
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function editAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimEditBannerData($formData);
				$errorMessage = $this->_checkEditBannerData($formData);
				if (empty($errorMessage))
				{
					$row = 0;
					if (!empty($formData["editBannerFilename"]))
					{
						$finfo = new finfo(FILEINFO_MIME_TYPE);
						$mimeType = $finfo->file(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["editBannerFilename"]);
						if ($mimeType == "application/x-shockwave-flash")
							$mediaType = "flash";
						else
							$mediaType = "image";
						$row = $this->_banner->editBanner($formData["editBannerID"], 
														  $formData["editBannerTypeID"], 
														  BMSC_Html::BANNER_URL_PREFIX . $formData["editBannerFilename"], 
														  $mediaType, 
														  $formData["editBannerURL"], 
														  $formData["editBannerTarget"], 
														  $formData["editBannerPriority"], 
														  $formData["editBannerIsActive"],
														  $adminSession->member["EMAIL"]);
					}
					else
					{
						$row = $this->_banner->editBanner($formData["editBannerID"], 
														  $formData["editBannerTypeID"], 
														  null, 
														  null, 
														  $formData["editBannerURL"], 
														  $formData["editBannerTarget"], 
														  $formData["editBannerPriority"], 
														  $formData["editBannerIsActive"],														  
														  $adminSession->member["EMAIL"]);
					}
					if ($row > 0)
					{
						if (!empty($formData["editBannerFilename"]))
						{
							if (file_exists(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["editBannerFilename"]))
								rename(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["editBannerFilename"], BMSC_Html::UPLOAD_BANNER_DIRECTORY . $formData["editBannerFilename"]);
							// Xóa file banner cũ
							$mediaFilename = substr($formData["editBannerOldFilename"], strrpos($formData["editBannerOldFilename"], "/") + 1);
							if (file_exists(BMSC_Html::UPLOAD_BANNER_DIRECTORY . $mediaFilename))
								unlink(BMSC_Html::UPLOAD_BANNER_DIRECTORY . $mediaFilename);
						}
						echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
					}
					else
					{
						if (file_exists(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["editBannerFilename"]))
							unlink(BMSC_Html::UPLOAD_TEMP_DIRECTORY . $formData["editBannerFilename"]);
						echo json_encode(array("code" => -98, "data" => "- Có lỗi khi lưu dữ liệu vào cơ sở dữ liệu. <br />"));
					}
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	function removeAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_POST;
				$formData = $this->_trimRemoveBannerData($formData);
				$errorMessage = $this->_checkRemoveBannerData($formData);
				if (empty($errorMessage))
				{
					$row = $this->_banner->removeBanner($formData["removeBannerID"], $adminSession->member["EMAIL"]);
					if ($row > 0)
					{
						echo json_encode(array("code" => 0, "data" => "- Thành công. <br />"));
					}
					else
						echo json_encode(array("code" => -98, "data" => "- Có lỗi khi lưu dữ liệu vào cơ sở dữ liệu. <br />"));
				}
				else
					echo json_encode(array("code" => -99, "data" => $errorMessage));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	public function listAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$typeID = (int)trim($this->_getParam("id"));
				$from = (int)trim($this->_getParam("from"));
				$numberOfBanners = (int)trim($this->_getParam("numberOfBanners"));
				$banners = $this->_banner->getBanners($typeID, $from, $numberOfBanners);
				echo json_encode(array("code" => 0, "data" => $banners));
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}

	private function _trimNewBannerData($formData)
	{
		$formData["newBannerTypeID"] = trim($formData["newBannerTypeID"]);
		$formData["newBannerURL"] = trim($formData["newBannerURL"]);
		$formData["newBannerTarget"] = trim($formData["newBannerTarget"]);
		$formData["newBannerPriority"] = trim($formData["newBannerPriority"]);
		if (isset($formData["newBannerIsActive"]))
			$formData["newBannerIsActive"] = trim($formData["newBannerIsActive"]);
		else
			$formData["newBannerIsActive"] = 0;
		return $formData;
	}

	private function _trimEditBannerData($formData)
	{
		$formData["editBannerID"] = trim($formData["editBannerID"]);
		$formData["editBannerTypeID"] = trim($formData["editBannerTypeID"]);
		$formData["editBannerURL"] = trim($formData["editBannerURL"]);
		$formData["editBannerTarget"] = trim($formData["editBannerTarget"]);
		$formData["editBannerPriority"] = trim($formData["editBannerPriority"]);
		if (isset($formData["editBannerIsActive"]))
			$formData["editBannerIsActive"] = trim($formData["editBannerIsActive"]);
		else
			$formData["editBannerIsActive"] = 0;
		return $formData;
	}

	private function _trimRemoveBannerData($formData)
	{
		$formData["removeBannerID"] = trim($formData["removeBannerID"]);
		return $formData;
	}

	private function _checkNewBannerData($formData)
	{
		$errorMessage = "";
		if (empty($formData["newBannerTypeID"]) || empty($formData["newBannerFilename"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		if ($formData["newBannerFilename"] == -1)
			$errorMessage = "- File banner không hợp lệ. <br />";

		return $errorMessage;
	}

	private function _checkEditBannerData($formData)
	{
		$errorMessage = "";
		if (empty($formData["editBannerTypeID"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";
		if ($formData["editBannerFilename"] == -1)
			$errorMessage = "- File banner không hợp lệ. <br />";

		return $errorMessage;
	}

	private function _checkRemoveBannerData($formData)
	{
		$errorMessage = "";
		if (empty($formData["removeBannerID"]))
			$errorMessage = "- Vui lòng nhập vào các thông tin bắt buộc. <br />";

		return $errorMessage;
	}
}
?>